home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
tex
/
td187src.lzh
/
MTDIALS.I
< prev
next >
Wrap
Text File
|
1991-06-08
|
41KB
|
1,285 lines
(*######################################################################
M A G I C D I A L S
######################################################################
Das Modul benutzt keine UserDef-Objekte, weil es damit nicht ohne
größere Anpassungsarbeiten zwischen den Compilern transferiert
werden kann. In dieser Version ist das Modul mit MM2, TDI und HM2
OHNE ÄNDERUNG laufähig. Ggf. können die Compilerswitches angepasst
werden.
######################################################################
V2.03 15.12.90 Jens Pirnay (Minimaländerung, daß bei RBUTTON
auch bei Status Exit ein Kreis gezeichnet wird)
V2.02 29.11.90 Peter Hellinger
V2.01 8.11.90 Peter Hellinger
V2.00 1.11.90 Peter Hellinger
V1.01 31.10.90 Peter Hellinger
V1.00 28.10.90 Peter Hellinger
V0.98 21.10.90 Peter Hellinger
V0.97 18.08.90 Peter Hellinger
######################################################################*)
IMPLEMENTATION MODULE mtDials;
(*------------------------------*)
(* COMPILERSWITCHES *)
(*------------------------------*)
(* TDI-Version: DEAKTIVIERT *)
(*------------------------------*)
(* V- Overflow-Checks *)
(* R- Range-Checks *)
(* S- Stack-Check *)
(* N- NIL-Checks *)
(* T- TDI-Compiler vor 3.01 *)
(* Q+ Branch statt Jumps *)
(* *)
(*------------------------------*)
(* MM2-Version: AKTIVIERT *)
(*------------------------------*)
(*$R- Range-Checks *)
(*$S- Stack-Check *)
(* *)
(*------------------------------*)
FROM SYSTEM IMPORT ADDRESS, ADR;
FROM Storage IMPORT ALLOCATE, DEALLOCATE;
FROM MagicSys IMPORT Nil, Null,
Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6, Bit7,
Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14, Bit15,
LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL, sBITSET,
lWORD, lINTEGER, lCARDINAL, lBITSET,
CastToChar, CastToByte, CastToByteset, CastToInt,
CastToCard, CastToBitset, CastToWord, CastToLInt,
CastToLCard, CastToLBitset, CastToLWord, CastToAddr;
FROM MagicBIOS IMPORT KRSHIFT, KLSHIFT, KCTRL, KALT, KCAPS;
FROM MagicVDI IMPORT VDIIntIn, VDIIntOut, VDIPtsIn, VDIPtsOut, VDIControl,
VDICall, tWorkIn, tWorkOut, MFDB, ShowCursor,
HideCursor, SetFillcolor, SetWritemode, Fat, Light,
Italic, Underline, Outline, Shadowed, SetTexteffect,
SetTextalignment, XOR, REPLACE, Text,
SetFillperimeter;
FROM MagicAES IMPORT GBOX, GTEXT, GBOXTEXT, GIMAGE, GPROGDEF, GIBOX,
GBUTTON, GBOXCHAR, GSTRING, GFTEXT, GFBOXTEXT,
GICON, GTITLE, SELECTABLE, DEFAULT, Exit, EDITABLE,
RBUTTON, LASTOB, TOUCHEXIT, HIDETREE, INDIRECT,
SELECTED, CROSSED, CHECKED, DISABLED, OUTLINED,
SHADOWED, DRAW3D, WHITEBAK, OBJECT, ObjcAdd, RTREE,
RsrcGaddr, EDINIT, EDCHAR, EDEND, ObjcEdit, ObjcDraw,
ObjcFind, BEGMCTRL, ENDMCTRL, WindUpdate, WFFULLXYWH,
WindGet, FMDGROW, FMDSHRINK, FormDial, FormCenter,
FormKeybd, FormButton, GrafMkstate, ARROW, FLATHAND,
GrafMouse, GrafDragbox, GrafHandle, MUKEYBD, MUBUTTON,
MUM1, MUM2, MUMESAG, MUTIMER, AESIntIn, AESIntOut,
AESCall, ObjcOffset;
FROM mtAppl IMPORT OpenWorkstation, Bitplanes,
MouseOn, MouseOff, MouseHand, MouseArrow;
FROM mtArea IMPORT AREA, NewAREA, DisposeAREA, FreeArea, SaveArea,
CopyArea, RestoreArea, MOVEUP, MOVEDOWN, MOVELEFT,
MOVERIGHT, MoveArea;
FROM MagicStrings IMPORT Assign, Length, Cap;
IMPORT MagicAES;
IMPORT MagicVDI;
IMPORT MagicXBIOS;
CONST ShortCut = '['; (* Zeichen das dem Shortcut vorausgeht *)
ShortKey = KALT; (* Taste für Shortcut-Kennung (ALTERNATE) *)
toScreen = TRUE;
toRAM = FALSE;
MaxLegals = 40;
TYPE tRect = RECORD
x, y, w, h: sINTEGER;
END;
(* Rechtecke bestehen PRINZIPIELL aus Koordinate
* (x, y), Breite (w) und Höhe (h)!!!
*)
TYPE MonoKnopf = ARRAY [0..15] OF sCARDINAL;
FarbKnopf = ARRAY [0..7] OF sCARDINAL;
AlertImage = ARRAY [0..31] OF lCARDINAL;
TYPE Trick = POINTER TO RECORD
CASE : BOOLEAN OF
TRUE: wert: sINTEGER;|
FALSE: hi: CHAR;
lo: CHAR;|
END;
END;
TYPE ObjcTree = POINTER TO ARRAY [0..MAX(INTEGER)] OF OBJECT;
TYPE DIALOG = POINTER TO Dialog;
Dialog = RECORD
tree: ObjcTree;
back: AREA;
move: BOOLEAN;
END;
VAR Handle: sINTEGER; (* VDI-Workstation *)
Breite: sINTEGER; (* Breite des Bildschirms *)
Hoehe: sINTEGER; (* Höhe des Bildschirms *)
ChWidth: sINTEGER; (* Breite eines Zeichens *)
ChHeight: sINTEGER; (* Höhe eines Zeichens *)
BoxWidth: sINTEGER; (* Breite der Zeichenbox *)
BoxHeight: sINTEGER; (* Höhe der Zeichenbox *)
ROffset: sINTEGER; (* Offset für Radio- und Checkbuttons *)
Initial: BOOLEAN; (* TRUE wenn InitMagicDials erfolgreich *)
Config: sBITSET; (* Globales Config-Flagset *)
VAR Tastatur: MagicXBIOS.PtrKEYTAB; (* Zeiger auf Tastaturtabelle *)
VAR legals: ARRAY [0..MaxLegals] OF CHAR;
(* Legale Zeichen für Shortcuts *)
VAR ScreenMFDB: MFDB; (* MFDB für Bildschirm *)
area: AREA;
VAR control7: POINTER TO ADDRESS; (* it's tricky... *)
control9: POINTER TO ADDRESS;
t: Trick;
t2: Trick;
VAR screen: tRect; (* Ausmaße des gesamten Schirms *)
small: tRect; (* Default-Rechteck mit Größe Null *)
clip: tRect; (* Clipping-Rechteck *)
VAR mKnopfEin: MonoKnopf; (* Images für Knöpfe *)
mKnopfAus: MonoKnopf;
mSelectEin: MonoKnopf;
mSelectAus: MonoKnopf;
fKnopfEin: FarbKnopf;
fKnopfAus: FarbKnopf;
fSelectEin: FarbKnopf;
fSelectAus: FarbKnopf;
(*----------------------------------------------------------------------*)
PROCEDURE GetKeytable (): MagicXBIOS.PtrKEYTAB;
VAR tb: ADDRESS;
BEGIN
tb:= Nil;
RETURN MagicXBIOS.Keytbl (tb, tb, tb);
END GetKeytable;
(*----------------------------------------------------------------------*)
PROCEDURE DialConfig (flag: sINTEGER; set: BOOLEAN);
BEGIN
CASE flag OF
UseUndo: IF set THEN INCL (Config, UseUndo);
ELSE EXCL (Config, UseUndo);
END;
|
ELSE ;
END;
END DialConfig;
PROCEDURE NewDial (tree: ADDRESS; VAR dial: DIALOG): BOOLEAN;
BEGIN
NEW (dial);
IF dial = NIL THEN RETURN FALSE; END;
IF NOT NewAREA (dial^.back) THEN
DISPOSE (dial); RETURN FALSE;
END;
dial^.tree:= tree;
RETURN TRUE;
END NewDial;
PROCEDURE DisposeDial (VAR dial: DIALOG);
BEGIN
IF dial # NIL THEN
DisposeAREA (dial^.back);
DI